package lanqiao.真题.第13届Java大学B组;

import java.math.BigInteger;
import java.util.Scanner;

/**
 * @author 挚爱之夕
 * @version 1.0
 * @implSpec 5分
 * 【问题描述】
 * 已知今天是星期六，请问20^22天后是星期几？
 * 注意用数字1到7表示星期一到星期日。
 * 【答案提交】
 * 这是一道结果填空的题，你只需要算出结果后提交即可。本题的结果为一
 * 个整数，在提交答案时只填写这个整数，填写多余的内容将无法得分。
 * 思路：
 * 1. 需要知道20^22 % 7 的值
 * 2. 求20^22的值超出了Long的最大值
 * 方式1：循环累成20 后对7取余
 * 方式2：使用BigInteger
 * @since 2023 - 01 - 05 - 20:05
 */
public class A_星期计算 {
}

class Main_A {
    public static void main(String[] args) {
        //5 代表周六
        int cur = 5;
        long interval = 1;
        //求 20^22 (long)Math.pow(20, 22); 会溢出
        //方式1: 因为求的是 20^22 % 7 ,所以每次累成20对7取余
        for (int i = 0; i < 22; i++) {
            interval = (interval * 20) % 7;
        }
        System.out.println((cur + interval) % 7 + 1);
        //方式2: 使用大数
        f();
    }
    static void f() {
        BigInteger interval = new BigInteger("1");
        BigInteger bigInteger = new BigInteger("20");
        for (int i = 0; i < 22; i++) {
            interval = interval.multiply(bigInteger);
        }
        BigInteger mod = new BigInteger("7");
        int res = interval.mod(mod).intValue();
        System.out.println((5 + res) % 7 + 1);
    }
}
